Migració de Canigó 2.2 a Canigó 2.3

Important: Canvis en la plantilla de Canigó.

Al migrar una aplicació a una nova versió de Canigó s'han de migrar també totes les dependències de serveis del propi Canigó.

En aquest cas concret modificarem el pom.xml de la nostra aplicació i canviarem les versions dels serveis de Canigó de la 2.2 a la 2.3.

Nota: És molt recomenable baixar-se el pom.xml de la plantilla de Canigó ja que s'ha fet una restructuració del mateix. Un cop descarregat, si és el cas, afegir les pròpies dependències.

Pel que fa a la part estàtica de l'aplicació (css, js, imatges, etc.), cal saber que aquesta també s'inclou a la plantilla i cal tenir en compte que si s'han fet modificacions pròpies, aquestes s'hauran de tornar a incloure en la nova versió, ja que aquests fitxers també poden haver estat modificats i/o corregits i es perdrien els canvis.

S'han fet també algunes modificacions en la configuració de l'aplicació-plantilla que pot ser important incorporar a l'aplicació que es migri de versió.  Aquestes modificacions es detallen més avall en aquesta mateixa pàgina.

Important: Canvi en la versió de la llibreria de xFire.

En les versions anteriors de Canigó es feia servir la versió 1.0-M5 de xFire, per la versió 2.3 s'ha passat a la versió 1.2.6 de xFire.

Si en el pom.xml de l'aplicació hi ha la dependència amb la versió de xFire anterior, simplement s'ha d'eliminar, ja que aquesta ha estat afegida al pom.xml arrel de Canigó.

Canvis en la configuració

Hi ha canvis en els següents arxius de configuració inclosos en l'aplicació plantilla:

  • web.xml : s'afegeix el filtre OpenSessionInViewFilter a les peticions dwr
  • spring/canigo-services-security.xml : s'afegeix la internacionalització a l'autentificació mitjançant SACE
  • spring/canigo-services-security.xml : s'afegeix l'autenticació mitjançant GICAR
  • spring/canigo-services-web.xml : s'afegeix la injecció del servei de logging al FormTag
  • spring/prototip-servlet.xml : s'afegeix un tractament d'excepcions genèriques
  • i18n/applicationResources.properties* : s'afegeix un missatje d'error

Al migrar una aplicació de Canigó 2.2 a Canigó 2.3.x cal tenir en compte que aquests canvis s'han d'incorporar manualment als arxius de configuració de l'aplicació.

A continuació es mostra cada un d'aquests canvis:

web.xml

S'afegeix el filtre OpenSessionInViewFilter a les peticions dwr. Caldrá afegir al web.xml de l'aplicació tant la definició del filtre com el seu mapping.

<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>

    (...)

<filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>/dwr/*</url-pattern>
</filter-mapping>



canigo-services-security.xml

SACE

S'afegeix la internacionalització a l'autentificació mitjançant SACE. Per fer-ho, s'afegeix la propietat i18nSecurityService al bean SACEAuthenticationConfiguration1 i es defineixen els beans securityDefaultLocale, securityMessageSource i securityI18nService.

<bean id="SACEAuthenticationConfiguration1"
      class="net.gencat.ctti.canigo.services.security.SACEAuthenticationConfiguration">
    <property name="i18nSecurityService" ref="securityI18nService" />
    <property name="logService" ref="loggingService" />
    <property name="urlSACE" value="https://sace.prepdc.gencat.intranet/SACE/SACE_Logon.aspx?XMLIn=" />
    <property name="userNameFormat" value="NIF" />
    <property name="httpsConfigBean" ref="httpsConfigBean" />
    <property name="certificates">
        <props>
            <prop key="ACC">classpath:certificates/PREPRODUCCIO EC-ACC_csrs.crt</prop>
            <prop key="GENCAT">classpath:certificates/PREPRODUCCIO EC-GENCAT_csrs.crt</prop>
            <prop key="SAFP">classpath:certificates/PREPRODUCCIO EC-SAFP_csrs.crt</prop>
        </props>
    </property>
    <property name="keyStore" value="classpath:keystore/DemoTrust.jks"/>
    <property name="keyStorePassPhrase" value="DemoTrustKeyStorePassPhrase"/>
</bean>

<bean id="securityDefaultLocale" class="java.util.Locale">
    <constructor-arg type="java.lang.String"><value>es</value></constructor-arg>
</bean>

<bean id="securityMessageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>i18n/saceErrorMessages</value>
        </list>
    </property>
</bean>

<bean id="securityI18nService" class="net.gencat.ctti.canigo.services.i18n.impl.SpringI18nServiceImpl">
    <property name="messageSource" ref="securityMessageSource"/>
    <property name="defaultLocale" ref="securityDefaultLocale"/>
</bean>
GICAR

En aquest mateix fitxer de configuració del servei de seguretat també s'inclou la nova modalitat d'autenticació GICAR. Per fer-ho, s'ha d'afegir la configuració d'aquest tipus d'auntenticació:

<bean id="GICARAuthenticationConfiguration"
      class="net.gencat.ctti.canigo.services.security.GICARAuthenticationConfiguration" >
    <property name="httpGicarHeaderUsernameKey" value="CODIINTERN" />
</bean>

Si es vol utilitzar l'autenticació mitjançant GICAR només cal canviar la referència en la llista de providers cap al bean que s'acaba de definir:

<bean id="authenticationConfiguration".... >
...
   <property name="authenticationProvidersConfigurationList">
      <list>
         <!-- ref local="SACEAuthenticationConfiguration1" /-->
         <!-- <ref local="ldapAuthenticationConfiguration2" /> -->
         <!-- <ref local="databaseAuthenticationConfiguration3" /> --> 
         <ref local="GICARAuthenticationConfiguration" />
      </list>
   </property>
</bean>



canigo-services-web.xml

S'afegeix la injecció del servei de logging al FormTag, definint la propietat logService.

<bean id="formTag"
      class="net.gencat.ctti.canigo.services.web.struts.taglib.forms.FormTag">
    <property name="logService" ref="loggingService"/>
    <property name="i18nService" ref="i18nService"/>
</bean>



prototip-servlet.xml

S'afegeix un tractament d'excepcions genèriques, definit els beans viewResolver i exceptionResolver.

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
</bean>
<bean id="exceptionResolver"
      class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <prop key="net.gencat.ctti.canigo.services.exceptions.SystemException">errorSystem</prop>
            <prop key="java.io.IOException">IOEx</prop>
        </props>
    </property>
</bean>



applicationResources.properties

S'afegeix el missatje d'error net.gencat.ctti.canigo.services.web.error_application en cada un dels idiomes.

net.gencat.ctti.canigo.services.web.error_application=S'ha produït un error